CREATE DATABASE [SiPDV] ON  PRIMARY 
( NAME = N'SiPDV', FILENAME = N'c:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\SiPDV.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'SiPDV_log', FILENAME = N'c:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\SiPDV_log.ldf' , SIZE = 1024KB , MAXSIZE = 524288KB , FILEGROWTH = 1024KB )
GO
ALTER DATABASE [SiPDV] SET COMPATIBILITY_LEVEL = 100
GO
ALTER DATABASE [SiPDV] SET ANSI_NULL_DEFAULT OFF 
GO
ALTER DATABASE [SiPDV] SET ANSI_NULLS OFF 
GO
ALTER DATABASE [SiPDV] SET ANSI_PADDING OFF 
GO
ALTER DATABASE [SiPDV] SET ANSI_WARNINGS OFF 
GO
ALTER DATABASE [SiPDV] SET ARITHABORT OFF 
GO
ALTER DATABASE [SiPDV] SET AUTO_CLOSE OFF 
GO
ALTER DATABASE [SiPDV] SET AUTO_CREATE_STATISTICS ON 
GO
ALTER DATABASE [SiPDV] SET AUTO_SHRINK OFF 
GO
ALTER DATABASE [SiPDV] SET AUTO_UPDATE_STATISTICS ON 
GO
ALTER DATABASE [SiPDV] SET CURSOR_CLOSE_ON_COMMIT OFF 
GO
ALTER DATABASE [SiPDV] SET CURSOR_DEFAULT  GLOBAL 
GO
ALTER DATABASE [SiPDV] SET CONCAT_NULL_YIELDS_NULL OFF 
GO
ALTER DATABASE [SiPDV] SET NUMERIC_ROUNDABORT OFF 
GO
ALTER DATABASE [SiPDV] SET QUOTED_IDENTIFIER OFF 
GO
ALTER DATABASE [SiPDV] SET RECURSIVE_TRIGGERS OFF 
GO
ALTER DATABASE [SiPDV] SET  DISABLE_BROKER 
GO
ALTER DATABASE [SiPDV] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
GO
ALTER DATABASE [SiPDV] SET DATE_CORRELATION_OPTIMIZATION OFF 
GO
ALTER DATABASE [SiPDV] SET PARAMETERIZATION SIMPLE 
GO
ALTER DATABASE [SiPDV] SET  READ_WRITE 
GO
ALTER DATABASE [SiPDV] SET RECOVERY SIMPLE 
GO
ALTER DATABASE [SiPDV] SET  MULTI_USER 
GO
ALTER DATABASE [SiPDV] SET PAGE_VERIFY CHECKSUM  
GO
USE [SiPDV]
GO
IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY') ALTER DATABASE [SiPDV] MODIFY FILEGROUP [PRIMARY] DEFAULT
GO

USE [master]
GO
CREATE LOGIN [SiPDV] WITH PASSWORD=N'SiPDV', DEFAULT_DATABASE=[SiPDV], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON
GO
USE [SiPDV]
GO
CREATE USER [SiPDV] FOR LOGIN [SiPDV]
GO
USE [SiPDV]
GO
EXEC sp_addrolemember N'db_owner', N'SiPDV'
GO

USE SiPDV;
GO

CREATE TABLE Tb_Operador (
	Id     INTEGER     NOT NULL IDENTITY(1,1),
	Codigo VARCHAR(11) NOT NULL,
	Nome   VARCHAR(30) NOT NULL,
	Senha  VARCHAR(32) NOT NULL,
	Status BIT         NOT NULL,
	
	CONSTRAINT Pk_Operador PRIMARY KEY(Id),
	CONSTRAINT Uk_Operador UNIQUE(Codigo)
)
GO

CREATE TABLE Tb_Produto (
	Id                 INTEGER     NOT NULL IDENTITY(1,1),
	Codigo_Barra       BIGINT      NOT NULL,
	Nome               VARCHAR(20) NOT NULL,
	Descricao          VARCHAR(35) NOT NULL,
	Unidade_Medida     VARCHAR(2)  NOT NULL,
	Quantidade_Estoque FLOAT       NOT NULL,
	Status             BIT         NOT NULL,
	
	CONSTRAINT Pk_Produto PRIMARY KEY(Id),
	CONSTRAINT Uk_Produto UNIQUE(Codigo_Barra)
)
GO

CREATE TABLE Tb_Preco (
	Id          INTEGER      NOT NULL IDENTITY(1,1),
	Id_Produto  INTEGER      NOT NULL,
	Data_Hora   DATETIME     NOT NULL,
	Preco_Custo DECIMAL(6,2) NOT NULL,
	Preco_Venda DECIMAL(6,2) NOT NULL,
	
	CONSTRAINT Pk_Preco   PRIMARY KEY(Id),
	CONSTRAINT Uk_Preco   UNIQUE(Id_Produto, Data_Hora),
	CONSTRAINT Fk_Produto FOREIGN KEY(Id_Produto) REFERENCES Tb_Produto(Id)
)
GO

CREATE TABLE Tb_Venda (
	Id          INTEGER      NOT NULL IDENTITY(1,1),
	Id_Operador INTEGER      NOT NULL,
	Data_Hora   DATETIME     NOT NULL,
	Subtotal    DECIMAL(6,2) NOT NULL,
	Desconto    DECIMAL(6,2),
	Total       DECIMAL(6,2) NOT NULL,
	
	CONSTRAINT Pk_Venda    PRIMARY KEY(Id),
	CONSTRAINT Uk_Venda    UNIQUE(Id_Operador, Data_Hora),
	CONSTRAINT Fk_Operador FOREIGN KEY(Id_Operador) REFERENCES Tb_Operador(Id)
)
GO

CREATE TABLE Tb_Venda_Produto (
	Id          INTEGER      NOT NULL IDENTITY(1,1),
	Id_Venda    INTEGER      NOT NULL,
	Id_Produto  INTEGER      NOT NULL,
	Quantidade  INTEGER      NOT NULL,
	Preco_Custo DECIMAL(6,2) NOT NULL,
	Preco_Venda DECIMAL(6,2) NOT NULL,
	
	CONSTRAINT Pk_Venda_Produto PRIMARY KEY(Id),
	CONSTRAINT Fk_Venda         FOREIGN KEY(Id_Venda)   REFERENCES Tb_Venda(Id),
	CONSTRAINT Fk_Produto2      FOREIGN KEY(Id_Produto) REFERENCES Tb_Produto(Id)
)
GO

INSERT INTO Tb_Operador (Codigo, Nome, Senha, Status) VALUES ('admin', 'Administrador', '21232F297A57A5A743894A0E4A801FC3', 'True')
GO
